/* **************    添加修改页面  Mixins   ***************** */
/**
 * 使用该混入的前置条件:
 *    1. 页面数据对象命名为form；
 *    2. [修改] 调用common.js中的getObj()；
 *    3. [保存] 单表保存，调用@/utils/base/myForm.js中的保存方法；
 */

import {
  getObj,
} from '@/api/common';

/* 工具 */
import * as common from '@/utils/base/common'
import * as myForm from '@/utils/base/myForm'

export default {
  props: ['restPath', 'showAdd', 'btnType', 'rowId'],
  data() {
    return {
      btnDisabled: false, //按钮禁用状态
      readOnly: false, // 是否只读
      titles: {
        create: '添加',
        update: '修改',
      },
      create: 'create',
      update: 'update',

    }
  },
  /**
   * 如果主键id不为id，则在引入该混入对象的组件中，重新created()
   */
  created() {
    this.initData()
  },
  methods: {
    initData() {
      // 修改页面
      if(this.btnType == this.update) {
        this.initData2Update()
      }
    },

    initData2Update() {
      getObj(this.restPath, this.rowId).then(response => {
        if(response.code === 200) {
          this.form = response.data
          if(common.isNotBlank(this.form.imgPath)) {
            this.imgFullpath = this.fastDfsUrl + this.form.imgPath
            // 添加图片路径
            this.fileList.push({
              id: 0,
              url: this.imgFullpath
            })
          }
        } else {
          common.message(this, 'warning', 2, response.message)              
        }
        
      }).catch(err => {
        common.message(this, 'error', 2, '获取数据失败!')
        console.error(err)
      })
    },

    /**
     * 点击保存按钮
     */
    handleSave() {
      this.$validator.validateAll().then((result) => {
        if(result) {
          // 修改页面
          if(this.btnType === this.update) {
            myForm.updateSave(this, this.restPath, this.form)
          }
          // 添加页面
          else {
            myForm.addSave(this, this.restPath, this.form)
          }
        } else {
          // 提示信息，并且防止连续多次请求
          common.tips(this, '有验证信息没有通过，请查看页面信息是否填写完整或正确！')
        }
      })
    },

    handleClose() {
      this.$emit('closeDialog') // 向父组件发送关闭事件
    },

  } // methods end
}